<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN">
<HTML><HEAD>
<TITLE>IBM Visualization Data Explorer Programmer&#39;s Reference</TITLE>

<META HTTP-EQUIV="abstract" CONTENT="IBM Visualization Data Explorer
Programmer&#39;s Reference">
<META HTTP-EQUIV="contact" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="owner" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="updated" CONTENT="Tue, 16 Sep 1997 ">
<META HTTP-EQUIV="review" CONTENT="Fri, 14 Aug 1998 ">

<META HTTP-EQUIV="keywords" CONTENT="GRAPHICS VISUALIZATION VISUAL PROGRAM DATA
MINING">
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
</HEAD><BODY BGCOLOR="#FFFFFF">

<A NAME="Top_Of_Page"></A>
<H1>IBM Visualization Data Explorer Programmer&#39;s Reference</H1>
<B>&#91; <A HREF="#Bot_Of_Page">Bottom of Page</A> &#124; <A
HREF="progu124.htm">Previous Page</A> &#124; <A HREF="progu126.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu097.htm#PToC20">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B><HR><P>
<H3><A NAME="HDRDXCH" HREF="progu097.htm#PToC_219">DXCreateHash</A></H3>
<A NAME="IDX1620"></A>
<A NAME="IDX1621"></A>
<P><STRONG>Function</STRONG>
<P>
Creates a hash table for storing elements.
<P><STRONG>Syntax</STRONG>
<BR>
<TT><STRONG><BR>
&#35;include &lt;dx/dx.h&gt;<BR>
<P><BR>
HashTable DXCreateHash(int elementSize, PseudoKey (*hashFunc)(),<BR>
                       int (*cmpFunc)())<BR>
</STRONG></TT><BR>
<P><STRONG>Functional Details</STRONG>
<P>
An element to be stored consists of a key plus whatever data is to be
associated with that key.
Its size, in bytes, is specified by <TT><STRONG>elementSize</STRONG></TT>.
in bytes.
The parameter <TT><STRONG>hashFunc</STRONG></TT> points to the optional hash
function callback.
Given an element, <TT><STRONG>hashFunc</STRONG></TT> should return a uniformly
distributed

long integer

pseudokey.
If <TT><STRONG>hashFunc</STRONG></TT> is not provided, then the first

long integer

word of each key is assumed to be the pseudokey.
<TT><STRONG>cmpFunc</STRONG></TT> is the optional compare function callback.
Given a search key and an element, <TT><STRONG>cmpFunc</STRONG></TT>
should return 0 if the key matches the element.
If no compare function is provided, any element matching the pseudokey
is assumed to match the search key.
<P>
Optionally provided by the calling application:
<BR>
<TT><STRONG><BR>
PseudoKey hashFunc (Key key);<BR>
</STRONG></TT><BR>
<P>
Called on insertion and query to convert the arbitrary-size search
key into the

long integer

pseudokey used to store the hash table-element.
<BR>
<TT><STRONG><BR>
int cmpFunc (Key searchKey, Element element);<BR>
</STRONG></TT><BR>
<P>
Called on insertion and query when an element from the table matches
the pseudokey.
Returns 0 if the search key matches the key contained in the element
found in the table.
<P>
See <A HREF="progu070.htm#HDRHASH">14.5 , "Hashing"</A> for additional details
on
<TT><STRONG>hashFunc</STRONG></TT> and
<TT><STRONG>cmpFunc</STRONG></TT>.
The HashTable created should be deleted with DXDestroy when it is no
longer needed.
See <A HREF="progu023.htm#HDRMEMNG">4.2 , "Memory Management"</A>.
<P>
<TT><STRONG>PseudoKey</STRONG></TT> is defined as:
<PRE><STRONG>
typedef long PseudoKey;
typedef Pointer Key;
</STRONG>
</PRE>
<P><STRONG>Return Value</STRONG>
<P>
Returns the hash table or returns <TT><STRONG>NULL</STRONG></TT> and sets an
error code.
<P><STRONG>See Also</STRONG>
<P>
<TT><STRONG>
<A HREF="progu132.htm#HDRDXDHE">DXDeleteHashElement</A>,
<A HREF="progu133.htm#HDRDXDHSH">DXDestroyHash</A>,
<A HREF="progu186.htm#HDRDXGNHE">DXGetNextHashElement</A>,
<A HREF="progu214.htm#HDRDXIGNHE">DXInitGetNextHashElement</A>,
<A HREF="progu218.htm#HDRDXIHE">DXInsertHashElement</A>,
<A HREF="progu280.htm#HDRDXQHE">DXQueryHashElement</A>
</STRONG></TT>
<P>
<A HREF="progu070.htm#HDRHASH">14.5 , "Hashing"</A>.
<P><HR><B>&#91; <A HREF="#Top_Of_Page">Top of Page</A> &#124; <A
HREF="progu124.htm">Previous Page</A> &#124; <A HREF="progu126.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu097.htm#PToC20">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B> <br><b>&#91;<a
href="../allguide.htm">Data Explorer Documentation</a>&nbsp;&#124;&nbsp;<a
href="../qikguide.htm">QuickStart Guide</a>&nbsp;&#124;&nbsp;<a
href="../usrguide.htm">User&#39;s Guide</a>&nbsp;&#124;&nbsp;<a
href="../refguide.htm">User&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../proguide.htm">Programmer&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../insguide.htm">Installation and Configuration
Guide</a>&nbsp;&#93;</b><br><p><b>&#91;<a
href="http://www.research.ibm.com/dx">Data Explorer Home
Page</a>&#93;</b><p><HR ALIGN=LEFT WIDTH=600><b>&#91;<A
HREF="http://www.ibm.com/">IBM Home Page</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Orders/">Order</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Search/">Search</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Assist/">Contact IBM</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Legal/">Legal</A>&nbsp;&#93;</b><hr><p>
<A NAME="Bot_Of_Page"></A>
</BODY></HTML>
